package progress.exa29_1.ui;

import java.io.*;
import java.net.*;
import java.util.Date;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;
import javafx.stage.Stage;

public class Server extends Application {

    public void start(Stage primaryStage){

        TextArea ta=new TextArea();
        Scene scene=new Scene(new ScrollPane(ta),450,200);
        primaryStage.setTitle("Server");
        primaryStage.setScene(scene);
        primaryStage.show();

        /*
          建立一个线程来进行端口监听
         */
        new Thread(()->{
            try{
                //创建服务器套接字，服务器端口号设为8000
                ServerSocket serverSocket=new ServerSocket(8000);

                Platform.runLater(()->ta.appendText("服务器启动成功 日期："+new Date()+'\n'));

                //服务器进入监听状态
                System.out.println("服务器进入监听状态");
                Socket socket = serverSocket.accept();
                System.out.println("监听到连接，即将进入下一步");
                //创建服务器接受和发送数据的流
                DataInputStream inputFromClient = new DataInputStream(socket.getInputStream());
                DataOutputStream outputToClient=new DataOutputStream(socket.getOutputStream());

                while(true){
                    double radius=inputFromClient.readDouble();//接受到的数据赋给radius

                    double area=radius*radius*Math.PI;//计算面积

                    outputToClient.writeDouble(area);//将计算值发送出去

                    Platform.runLater(()->{
                        ta.appendText("接收到客户端传来的半径：:"+radius+'\n');
                        ta.appendText("面积是:"+area+'\n');
                    });
                }

            }catch(IOException ex){
                ex.printStackTrace();
            }
        }).start();
    }

}
